

// server  
// 服务器端的 socket

// # 服务器端的 Socket
// 1. 创建 socket
// 2. 启动 socket 服务器  绑定端口和ip
// 3. 接收来自客户端的链接请求
// 4. 接收来自客户端的数据  转发消息给其他的客户端 
// 5. 监听客户端关闭



const ws = require("ws")
const SocketServer = ws.Server;
const port = 3800


const wss = new SocketServer({port})   // 创建 socket   启动 socket 服务器  绑定端口和ip
console.log("SocketServer is Running at "+port)

const querystring = require("querystring")

let count = 0;
let info = "wuhan2010__"
let onLineUser =  {}


// 接收来自客户端的请求
wss.on("connection",(socket)=>{
    console.log(`${querystring.stringify(socket)}  欢迎 上线..`)
    count++;
    socket.name = info+count;
    onLineUser[socket.name] = socket 

    // 4. 接收来自客户端的数据  转发消息给其他的客户端 
    socket.on("message",(msg)=>{
        console.log(msg)
        boradcast(msg,socket)
    })

    // 5. 监听客户端关闭
    socket.on("close",()=>{
        boradcast('886,我下线了...',socket)
    })


    function boradcast(msg,socket){
        var time = new Date();
        var hour = time.getHours();
        var min = time.getMinutes();
        var sec = time.getSeconds();
        for(var i in onLineUser){
            onLineUser[i].send(`${socket.name} 说 : ${msg}  -(${hour}:${min}:${sec})`)
        }
    }
})